package com.kevin.jdbc.dao.imp;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import com.kevin.jdbc.dao.BaseDao;
import com.kevin.jdbc.dao.UserDao;
import com.kevin.jdbc.dto.User;

public class UserDaoImp extends BaseDao implements UserDao {

	@Override
	public int addUser(User user) throws SQLException {

		// Connection conn = null;
		// PreparedStatement stm = null;
		// ResultSet rs = null;
		//
		// try {
		// conn = getConnection();
		// String sql = "insert into user(name,birthday,money) values (?,?,?)";
		// stm = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
		// stm.setString(1, user.getName());
		// stm.setDate(2, new Date(user.getBirthyday().getTime()));
		// stm.setFloat(3, user.getMoney());
		// stm.execute();
		//
		// rs = stm.getGeneratedKeys();
		// rs.next();
		// System.out.println(rs.getInt(1));
		//
		// // rs.next();
		// // rs.getInt(1);
		//
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } finally {
		// free(rs, stm, conn);
		// }

		return 0;
	}

	@Override
	public void deleteUser(String name) {
		// Connection conn = null;
		// PreparedStatement stm = null;
		// ResultSet rs = null;
		//
		// try {
		// conn = getConnection();
		// String sql = "delete from user where name = ?";
		// stm = conn.prepareStatement(sql);
		// stm.setString(1, name);
		// stm.execute();
		//
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } finally {
		// free(rs, stm, conn);
		// }
	}

	@Override
	public List<User> getUserByName(String name) {

		String sql = "select * from user where name = ?";
		Object[] args = { name };

		super.select(sql, args);

		return (List<User>) super.select(sql, args);
	}

	@Override
	public void updateUserMonery(String name, float money) {
		// Connection conn = null;
		// PreparedStatement stm = null;
		// ResultSet rs = null;
		//
		// try {
		// conn = getConnection();
		// String sql = "update user set money = ? where name = ?";
		// stm = conn.prepareStatement(sql);
		// stm.setFloat(1, money);
		// stm.setString(2, name);
		// stm.executeUpdate();
		//
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } finally {
		// free(rs, stm, conn);
		// }
	}

	@Override
	public void updateUserByTranction(String name) throws SQLException {

		// Connection conn = null;
		// PreparedStatement stm = null;
		// ResultSet rs = null;
		//
		// // Savepoint sp = null;
		//
		// try {
		// conn = getConnection();
		// conn.setAutoCommit(false);
		// conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
		//
		// // sp = conn.setSavepoint();
		//
		// String sql = "update user set money = ? where name = ?";
		// stm = conn.prepareStatement(sql);
		// stm.setFloat(1, 100);
		// stm.setString(2, name);
		// stm.executeUpdate();
		//
		// conn.commit();
		//
		// } catch (SQLException e) {
		// conn.rollback();
		// // conn.rollback(sp);
		// } finally {
		// free(rs, stm, conn);
		// }
	}

	@Override
	public int procedureAddUser(User user) throws SQLException {
		// Connection conn = null;
		// CallableStatement cstm = null;
		// ResultSet rs = null;
		//
		// // Savepoint sp = null;
		//
		// try {
		// conn = getConnection();
		// String sql = "{ call AddUser(?,?,?,?)}";
		// cstm = conn.prepareCall(sql);
		// cstm.setString(1, user.getName());
		// cstm.setDate(2, new Date(user.getBirthyday().getTime()));
		// cstm.setFloat(3, user.getMoney());
		//
		// cstm.registerOutParameter(4, Types.INTEGER);
		// cstm.executeUpdate();
		//
		// } catch (SQLException e) {
		// // conn.rollback();
		// // conn.rollback(sp);
		// } finally {
		// free(rs, cstm, conn);
		// }
		// return cstm.getInt(4);
		return 0;
	}

	@Override
	public int batAddUser(User user) throws SQLException {
		// Connection conn = null;
		// PreparedStatement stm = null;
		// ResultSet rs = null;
		//
		// try {
		// conn = getConnection();
		// String sql = "insert into user(name,birthday,money) values (?,?,?)";
		// stm = conn.prepareStatement(sql);
		// for (int i = 0; i < 100; i++) {
		// stm.setString(1, user.getName() + i);
		// stm.setDate(2, new Date(user.getBirthyday().getTime()));
		// stm.setFloat(3, user.getMoney());
		//
		// stm.addBatch();
		// }
		//
		// stm.executeBatch();
		//
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } finally {
		// free(rs, stm, conn);
		// }
		return 0;
	}

	@Override
	public List<User> getUserByNamepaging(String name) {
		// Connection conn = null;
		// PreparedStatement stm = null;
		// ResultSet rs = null;
		//
		// List<User> userList = new ArrayList<User>();
		//
		// try {
		// conn = getConnection();
		// String sql = "select * from user where name = ? limit 5,10";
		// stm = conn.prepareStatement(sql);
		// stm.setString(1, name);
		// rs = stm.executeQuery();
		//
		// //rs.absolute(10);
		//
		// while (rs.next()) {
		//
		// User user = getUser(rs);
		// userList.add(user);
		// }
		//
		// System.out.println(userList.size());
		//
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } finally {
		// free(rs, stm, conn);
		// }
		// return userList;

		return null;
	}

	@Override
	public Object rowMapper(ResultSet rs) throws SQLException {

		User user = new User();

		user.setId(rs.getInt(1));
		user.setName(rs.getString(2));
		user.setBirthyday(rs.getDate(3));
		user.setMoney(rs.getFloat(4));

		return null;
	}

}
